home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
cmln0386.arc
/
CROSSTH1.LTG
< prev
next >
Wrap
Text File
|
1986-03-03
|
1KB
|
46 lines
Listing 1.
Simulating a record strcuture in True BASIC containing numbers only.
! Define Selected Index function
DEF SI(REC_MAP$,P_VAR$)
! FIND POSITION OF VARIABLE IN RECORD MAP
LET PTR = POS(REC_MAP$,UCASE$(P_VAR$))
! EXTRACT INDEX
LET SI = VAL(REC_MAP$[PTR-2:PTR-1])
END DEF
!----------------------------------------------------------------
SUB INITIALIZE_CALC(MAP$, REC())
LET MAP$ = "01<TEMPERATURE>02<PRESSURE>03<VOLUME>04<RCONST>05<MOLES>"
! THE ALTERNATE ASSIGNMENT BELOW IS ALSO VALID
! LET MAP$ = "02<PRESSURE>01<TEMPERATURE>04<RCONST>03<VOLUME>05<MOLES>"
! INITILIZE WITH STP CONDITIONS
LET REC(SI(MAP$,"<TEMPERATURE>")) = 273 ! DEGREES KELVIN
LET REC(SI(MAP$,"<PRESSURE>")) = 1 ! ATMOSPEHERE
LET REC(SI(MAP$,"<RCONSTANT>")) = 0.082 ! UNIVERSAL GAS CONSTANT
END SUB
!----------------------------------------------------------------
SUB GET_VOLUME(MAP$,REC(),NUM_MOLE)
! ASSIGN ARRAY ELEMENT TO LOCAL VARIABLESèLET TEMP = REC(SI(MAP$,"<TEMPERATURE>")
LET PRESS = REC(SI(MAP$,"<PRESSURE>"))
LET R = REC(SI(MAP$,"<RCONSTANT>"))
! CALCULATE VOLUME
LET VOL = NUM_MOLE * R * TEMP / PRESS
! ASSIGN RESULT AND NUMBER OF MOLES TO PROPER ARRAY ELEMENTS
LET REC(SI(MAP$,"<VOLUME>")) = VOL
LET REC(SI(MAP$,"<MOLES>")) = NUM_MOLE
END SUB